package com.itheima.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.entity.Result;
import com.itheima.pojo.Setmeal;
import com.itheima.service.SetmealService;
import com.itheima.utils.QiniuUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.security.auth.login.CredentialNotFoundException;
import java.util.List;
import java.util.UUID;

@RestController
@RequestMapping("/setmeal")
public class SetmealController {

    @Reference
    private SetmealService setmealService;
    /*
    *1.套餐查询
        a.请求地址：/setmeal/findPage.do
        b.请求参数： currentPage、pageSize、queryString
        c.功能是什么：带条件的分页查询
        d.返回什么：total 、rows
    * */
    @RequestMapping("/findPage")
    public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
        PageInfo<Setmeal> pageInfo =  setmealService.findPage(queryPageBean);
        return new PageResult(pageInfo.getTotal(),pageInfo.getList());
    }
    /*
    *a.上传图片接口（异步上传）
            项目中的文件一般会存储在Nginx、文件存储服务器、云服务器上
            当前项目中的图片就是放在云服务器上（七牛云）
            1).请求地址： /setmeal/upload.do
            2).请求参数： imgFile（二进制文件）
            3).功能是什么：上传图片
            4).返回什么：data(文件名) 、message
    * */

    @RequestMapping("/upload")
    public Result upload(@RequestParam("imgFile") MultipartFile imgFile){
        //上传图片
        String fileName = "";
        try{
            String originalFilename = imgFile.getOriginalFilename(); //获取文件的原名称 kun.kun.jpg   fan.fan.jepg
            //用uuId生成随机字符串，当做图片名
            String name = UUID.randomUUID().toString();
            //获取到源文件的后缀
            int index =  originalFilename.lastIndexOf(".");
            String houzhui = originalFilename.substring(index);

            fileName = name + houzhui;
            QiniuUtils.upload2Qiniu(imgFile.getBytes(),fileName);
            return new Result(true,"文件上传成功",fileName);
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,"文件上传失败",fileName);
        }
    }
    /*
    *c.添加套餐
            1).请求地址： /setmeal/add.do
            2).请求参数：checkgroupIds(普通的数组参数)、 this.formData（表单数据）
            3).功能是什么： 添加数据到套餐表 、获取新增套餐的主键 、添加数据到中间表
            4).返回什么：成功（flag、message） 失败（flag、message）
    * */
    @RequestMapping("/add")
    public Result add(@RequestBody Setmeal setmeal,int[] checkgroupIds){
        try{
            setmealService.add(setmeal,checkgroupIds);
            return new Result(true,"你好，添加成功了");
        }catch (Exception e){
            return new Result(false,"对不起，添加失败了");
        }
    }
}
